package com.southminority.ethnic.controller.research.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.southminority.ethnic.vo.AttachmentFileVO;
import lombok.Data;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 研究进展VO类
 * 用于前端数据展示
 * 
 * @author SouthMinority
 */
@Data
public class ResearchProgressVO {

    /**
     * 研究进展ID
     */
    private Long id;

    /**
     * 进展标题
     */
    private String title;

    /**
     * 关联项目ID
     */
    private Long projectId;

    /**
     * 归属机构ID
     */
    private Long organizationId;

    /**
     * 进展日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate progressDate;

    /**
     * 进展月份（如：2023年11月）
     */
    private String progressMonth;

    /**
     * 研究阶段
     */
    private String stage;

    /**
     * 进展描述
     */
    private String description;

    /**
     * 详细内容
     */
    private String content;

    /**
     * 主要成就列表（JSON字段转换）
     */
    private List<String> achievements;

    /**
     * 里程碑事件列表（JSON字段转换）
     */
    private List<String> milestones;

    /**
     * 参与人员列表（JSON字段转换）
     */
    private List<String> participants;

    /**
     * 下一步计划
     */
    private String nextSteps;

    /**
     * 遇到的困难
     */
    private String difficulties;

    /**
     * 解决方案
     */
    private String solutions;

    /**
     * 研究领域
     */
    private String researchField;

    /**
     * 项目完成度百分比
     */
    private Integer progressPercentage;

    /**
     * 封面图片
     */
    private String coverImage;

    /**
     * 相关图片URLs列表（JSON字段转换）
     */
    private List<String> imageUrls;

    /**
     * 附件文件列表（JSON字段转换）
     */
    private List<AttachmentFileVO> attachmentUrls;

    /**
     * 关键词
     */
    private String keywords;

    /**
     * 标签
     */
    private String tags;

    /**
     * 浏览次数
     */
    private Integer viewCount;

    /**
     * 排序
     */
    private Integer sortOrder;

    /**
     * 是否重点展示：1-是，0-否
     */
    private Integer isFeatured;

    /**
     * 是否在时间线显示：1-是，0-否
     */
    private Integer isTimeline;

    /**
     * 状态：1-已发布，0-草稿，-1-已删除
     */
    private Integer status;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
}
